package wxjsapi

import (
	"context"
	"github.com/wechatpay-apiv3/wechatpay-go/core"
	"github.com/wechatpay-apiv3/wechatpay-go/core/option"
	"github.com/wechatpay-apiv3/wechatpay-go/utils"
)

var (
	Appid                      string = "wxbe450b573672a284"
	mchID                      string = "1655937357"                               // 商户号
	mchCertificateSerialNumber string = "43EF1006EA3131BC2408B0353DBD67F58A1CEE93" // 商户证书序列号
	mchAPIv3Key                string = "26185272563c4379275941e17ae56af8"         // 商户APIv3密钥
)

// var Client *
func InitClient() (*core.Client, context.Context, error) {
	// 使用 utils 提供的函数从本地文件中加载商户私钥，商户私钥会用来生成请求的签名
	mchPrivateKey, err := utils.LoadPrivateKeyWithPath("conf/apiclient_key.pem")

	if err != nil {
		return nil, nil, err
	}
	ctx := context.Background()
	// 使用商户私钥等初始化 client，并使它具有自动定时获取微信支付平台证书的能力
	opts := []core.ClientOption{
		option.WithWechatPayAutoAuthCipher(mchID, mchCertificateSerialNumber, mchPrivateKey, mchAPIv3Key),
	}
	client, err := core.NewClient(ctx, opts...)
	if err != nil {
		return client, ctx, err
	}
	return client, ctx, err
}
